package love.yuanmengrobot.attendancesystem.dao;
/*
 *   @Studio:CHJY · 源梦科技
 *   @Author:CHJY创幻
 *   @Ide:IntelliJ IDEA
 *   @Creation time:2021/6/20 16:37
 */

import love.yuanmengrobot.attendancesystem.dao.SQL.SqlString;
import love.yuanmengrobot.attendancesystem.entity.Clazz;
import love.yuanmengrobot.attendancesystem.entity.Member;
import love.yuanmengrobot.attendancesystem.util.JdbcUtil;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class ClazzDao {

    /**
     * 通过ID查询单条数据
     *
     * @param memberid 主键
     * @return 实例对象
     */
   public ArrayList<Clazz> queryById(String memberid) {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtil.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(SqlString.selectTClazzById(memberid));
            ArrayList<Clazz> clazzList = new ArrayList<Clazz>();
            while (rs.next()) {
                Clazz clazz = new Clazz(
                        rs.getString("clazzid"),
                        rs.getString("clazzname"),
                        rs.getString("memberid"),
                        rs.getString("createTime"));

                clazzList.add(clazz);
            }
            if (clazzList.size() > 0) {
                return clazzList;
            } else return null;

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//回收资源
            JdbcUtil.close(rs, stmt, conn);
        }


        return null;
    }

    ;

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<Clazz> queryAllByLimit(int offset, int limit) {
        return null;
    }

    ;


    /**
     * 通过实体作为筛选条件查询
     *
     * @param clazz 实例对象
     * @return 对象列表
     */
    List<Clazz> queryAll(Clazz clazz) {
        return null;
    }

    ;

    /**
     * 新增数据,创建班级
     *
     * @param
     * @return 影响行数
     */
    public int insertAdd(String clazzname, String memberid) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtil.getConnection();
            stmt = conn.createStatement();
            int s = stmt.executeUpdate(SqlString.insertAddClazz(clazzname, memberid));
            if (s == 1) {
                return 1;
            } else {
                return 0;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//回收资源
            JdbcUtil.close(rs, stmt, conn);
        }
        return 0;
    }

    ;

    /**
     * 新增数据,加入班级
     *
     * @param
     * @return 影响行数
     */
    public int insertClazz(String clazzid, String memberid) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtil.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(SqlString.selectClazzNameById(clazzid));
            if (rs.next()) {

                String clazzname = rs.getString("clazzname");
                int s = stmt.executeUpdate(SqlString.insertClazz(clazzid, clazzname, memberid));
                if (s == 1) {
                    return 1;
                } else {
                    return 0;
                }

            } else {

            }


        } catch (SQLException e) {
            e.printStackTrace();
        } finally {//回收资源
            JdbcUtil.close(rs, stmt, conn);
        }
        return 0;
    }

    ;

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<Clazz> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(List<Clazz> entities) {
        return 0;
    }

    ;

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<Clazz> 实例对象列表
     * @return 影响行数
     */
    int insertOrUpdateBatch(List<Clazz> entities) {
        return 0;
    }

    ;

    /**
     * 修改数据
     *
     * @param clazz 实例对象
     * @return 影响行数
     */
    int update(Clazz clazz) {
        return 0;
    }

    ;

    /**
     * 通过主键删除数据
     *
     * @param clazzid 主键
     * @return 影响行数
     */
    int deleteById(Integer clazzid) {
        return 0;
    }

    ;

}
